from enum import Enum


class AppointmentReminderTypes(Enum):
    TWO_DAYS_BEFORE = 1
    ONE_DAY_BEFORE = 2
    ONE_HOUR_BEFORE = 3
    FIVE_MINUTES_BEFORE = 4
    SESSION_START_TIME = 5
    NONE = 6

class ClientNotificationTypes(Enum):
    PROVIDER_MESSAGES = 1
    PAYMENT_RECEIVED = 2

class ClientNotesReminderTypes(Enum):
    SESSION_END_TIME = 1
    FIVE_MINUTES_AFTER = 2
    ONE_HOUR_AFTER = 3
    ONE_DAY_AFTER = 4
    TWO_DAYS_AFTER = 5
    NONE = 6


class NotificationTypes(Enum):
    CLIENT_MESSAGES = 1
    PAYMENT_RECEIVED = 2
    PAYMENT_OVERDUE = 3
    CLIENT_CHECK_IN = 4
    SOFTWARE_UPDATES = 5
    KIOSK_CHECK_IN = 6


TYPES = NotificationTypes

NOTIFICATION_TYPES = (
    (TYPES.CLIENT_MESSAGES.value, 'CLIENT_MESSAGES'),
    (TYPES.PAYMENT_RECEIVED.value, 'PAYMENT_RECEIVED'),
    (TYPES.PAYMENT_OVERDUE.value, 'PAYMENT_OVERDUE'),
    (TYPES.CLIENT_CHECK_IN.value, 'CLIENT_CHECK_IN'),
    (TYPES.SOFTWARE_UPDATES.value, 'SOFTWARE_UPDATES'),
    (TYPES.KIOSK_CHECK_IN.value, 'KIOSK_CHECK_IN')
)

APPOINTMENT_REMINDER_TYPES = (
    (AppointmentReminderTypes.TWO_DAYS_BEFORE.value, 'two days before'),
    (AppointmentReminderTypes.ONE_DAY_BEFORE.value, 'one day before'),
    (AppointmentReminderTypes.ONE_HOUR_BEFORE.value, 'one hour before'),
    (AppointmentReminderTypes.FIVE_MINUTES_BEFORE.value, 'five minutes before'),
    (AppointmentReminderTypes.SESSION_START_TIME.value, 'session start time'),
    (AppointmentReminderTypes.NONE.value, 'None'),
)

CLIENT_NOTES_REMINDER_TYPES = (
    (ClientNotesReminderTypes.SESSION_END_TIME.value, 'session end time'),
    (ClientNotesReminderTypes.FIVE_MINUTES_AFTER.value, 'five minutes after'),
    (ClientNotesReminderTypes.ONE_HOUR_AFTER.value, 'one hour after'),
    (ClientNotesReminderTypes.ONE_DAY_AFTER.value, 'one day after'),
    (ClientNotesReminderTypes.TWO_DAYS_AFTER.value, 'two days after'),
    (ClientNotesReminderTypes.NONE.value, 'None'),
)

CLIENT_NOTIFICATION_TYPES = (
    (ClientNotificationTypes.PROVIDER_MESSAGES.value, 'PROVIDER_MESSAGES'),
    (ClientNotificationTypes.PAYMENT_RECEIVED.value, 'PAYMENT_RECEIVED')

)